import re

# 亏损范围
profit_scope = -3

# 是否支持同源(source)对比
sup_source = False
# sup_source = True

stop_words = ["联赛", "组", "级", "族", "足球", "足联", "国家", "(", ")"]
# 构建正则表达式模式
pattern = "|".join(map(re.escape, stop_words))  # 使用 re.escape 避免特殊字符问题
# 提高指定词的权重
target_words = ["甲", "乙", "丙", "丁"]
# 定义等价词汇映射表
equivalent_words = {
    "纽西兰": "新西兰",
    "欧罗巴": "欧洲",
    "杯赛": "杯",
    "二 队": "后备",
    "二队": "后备",
    "防卫 队": "卫队",
    "防卫队": "卫队",
    "联队": "联",
    "东部": "东",
    "南部": "南",
    "西部": "西",
    "北部": "北",
    "威尔士": "威尔斯",
    "蓝十字": "阿苏尔",
    "FOC法斯塔": "法斯塔",
    "尼科平斯": "尼科平斯",
    "尼雪平": "尼科平斯",
    "羊毛 科技": "羊绒 工业",
}

hedges = [
    # x赌赢&最先进球, 双胜彩-x|平, x落后反超 -----------------------------------------------------------------------
    ['win_fg_h_h', 'dc_c_n', 'cb_h'],   # 主队赌赢&最先进球, 双胜彩-客队|平, 主队落后反超
    ['win_fg_c_c', 'dc_h_n', 'cb_c'],   # 客队赌赢&最先进球, 双胜彩-主队|平, 客队落后反超
    # 双方进球-是, 零失球获胜, 零失球获胜, 0-0 -----------------------------------------------------------------------
    ['btts_y', 'cs_win_h', 'cs_win_c', 'zero_zero'],    # 双方进球-是, 主队零失球获胜, 客队零失球获胜, 0-0
    ['btts_y', 'dc_h_c', 'zero_zero'],    # 双方进球-是, 双胜彩-主队|客队, 0-0
    # x零失球获胜, 双胜彩-x|平, x独赢 -----------------------------------------------------------------------
    ['cs_win_h', 'dc_h_n', 'win_c'],   # 主队零失球获胜, 双胜彩-主队|平, 客队独赢
    ['cs_win_c', 'dc_c_n', 'win_h'],   # 客队零失球获胜, 双胜彩-客队|平, 主队独赢
    # 罚牌 -----------------------------------------------------------------------
    ['card_over_1', 'card_under_1'],    # 发牌大, 发牌小
    ['card_over_1/1.5', 'card_under_1/1.5'],    # 发牌大, 发牌小
    ['card_over_2', 'card_under_2'],    # 发牌大, 发牌小
    ['card_over_2/2.5', 'card_under_2/2.5'],    # 发牌大, 发牌小
    ['card_over_3', 'card_under_3'],    # 发牌大, 发牌小
    ['card_over_3/3.5', 'card_under_3_3/3.5'],    # 发牌大, 发牌小
    ['card_over_4', 'card_under_4'],    # 发牌大, 发牌小
    # 罚牌 (半场) -----------------------------------------------------------------------
    ['card_over_half_1', 'card_under_half_1'],    # 发牌大, 发牌小
    ['card_over_half_1/1.5', 'card_under_half_1/1.5'],    # 发牌大, 发牌小
    ['card_over_half_2', 'card_under_half_2'],    # 发牌大, 发牌小
    ['card_over_half_2/2.5', 'card_under_half_2/2.5'],    # 发牌大, 发牌小
    ['card_over_half_3', 'card_under_half_3'],    # 发牌大, 发牌小
    ['card_over_half_3/3.5', 'card_under_half_3_3/3.5'],    # 发牌大, 发牌小
    ['card_over_half_4', 'card_under_half_4'],    # 发牌大, 发牌小
]

flag_dict = {
    # 独赢
    'win_h': {'ratio': '{}-胜', 'type': '独赢'},      # 主队胜
    'win_c': {'ratio': '{}-胜', 'type': '独赢'},      # 客队胜
    'win_n': {'ratio': '平局', 'type': '独赢'},          # 平局
    # 独赢 - 半场
    'win_h_half': {'ratio': '{}-胜', 'type': '独赢(半场)'},      # 主队胜
    'win_c_half': {'ratio': '{}-胜', 'type': '独赢(半场)'},      # 客队胜
    'win_n_half': {'ratio': '平局', 'type': '独赢(半场)'},         # 平局

    # 让球/受让
    'hcap_h': {'ratio': '{} -{}', 'type': '让球/受让'},   # 主队让球
    'hcap_c': {'ratio': '{} -{}', 'type': '让球/受让'},   # 客队让球
    'ud_h': {'ratio': '{} +{}', 'type': '让球/受让'},   # 主队受让球
    'ud_c': {'ratio': '{} +{}', 'type': '让球/受让'},   # 客队受让球
    # 让球/受让 - 半场
    'hcap_h_half': {'ratio': '{} -{}', 'type': '让球/受让(半场)'},     # 主队让球
    'hcap_c_half': {'ratio': '{} -{}', 'type': '让球/受让(半场)'},     # 客队让球
    'ud_h_half': {'ratio': '{} +{}', 'type': '让球/受让(半场)'},     # 主队受让球
    'ud_c_half': {'ratio': '{} +{}', 'type': '让球/受让(半场)'},     # 客队受让球
    
    # 独赢 & 最先进球
    'win_fg_h_h': {'ratio': '{}&{}', 'type': '独赢&最先进球'},      # 主队 & 主队
    'win_fg_h_c': {'ratio': '{}&{}', 'type': '独赢&最先进球'},      # 主队 & 客队
    'win_fg_c_h': {'ratio': '{}&{}', 'type': '独赢&最先进球'},      # 客队 & 主队
    'win_fg_c_c': {'ratio': '{}&{}', 'type': '独赢&最先进球'},      # 客队 & 客队
    'win_fg_n_h': {'ratio': '平局&{}', 'type': '独赢&最先进球'},    # 平局 & 主队
    'win_fg_n_c': {'ratio': '平局&{}', 'type': '独赢&最先进球'},    # 平局 & 客队
    # 独赢 & 双方球队进球
    'win_btts_h_y': {'ratio': '{}&是', 'type': '独赢&双方球队进球'},     # 主队 & 是
    'win_btts_h_n': {'ratio': '{}&否', 'type': '独赢&双方球队进球'},     # 主队 & 否
    'win_btts_c_y': {'ratio': '{}&是', 'type': '独赢&双方球队进球'},     # 客队 & 是
    'win_btts_c_n': {'ratio': '{}&否', 'type': '独赢&双方球队进球'},     # 客队 & 否
    'win_btts_n_y': {'ratio': '平局&是', 'type': '独赢&双方球队进球'},   # 平局 & 是
    'win_btts_n_n': {'ratio': '平局&否', 'type': '独赢&双方球队进球'},   # 平局 & 否
    
    # 大/小 & 双方球队进球
    'over_btts_y': {'ratio': '大&是({})', 'type': '大/小&双方球队进球'},   # 大 & 是
    'over_btts_n': {'ratio': '大&否({})', 'type': '大/小&双方球队进球'},   # 大 & 否
    'under_btts_y': {'ratio': '小&是({})', 'type': '大/小&双方球队进球'},  # 小 & 是
    'under_btts_n': {'ratio': '小&否({})', 'type': '大/小&双方球队进球'},  # 小 & 否
    
    # 总进球数
    'tg': {'ratio': '{}', 'type': '总进球数'},         # x-x
    # 双胜彩
    'dc_h_n': {'ratio': '{}|平局', 'type': '双胜彩'},       # 主队|平局
    'dc_c_n': {'ratio': '{}|平局', 'type': '双胜彩'},       # 客队|平局
    'dc_h_c': {'ratio': '{}|{}', 'type': '双胜彩'},         # 主队|客队
    # 落后反超获胜
    'cb_h': {'ratio': '{}', 'type': '落后反超获胜'},   # 主队
    'cb_c': {'ratio': '{}', 'type': '落后反超获胜'},   # 客队
    # 双方球队进球
    'btts_y': {'ratio': '是', 'type': '双方球队进球'},   # 是
    'btts_n': {'ratio': '否', 'type': '双方球队进球'},   # 否
    # 双方球队进球 - 半场
    'btts_y_half': {'ratio': '是', 'type': '双方球队进球(半场)'},    # 是
    'btts_n_half': {'ratio': '否', 'type': '双方球队进球(半场)'},    # 否
    # 零失球获胜
    'cs_win_h': {'ratio': '{}', 'type': '零失球获胜'},    # 主队
    'cs_win_c': {'ratio': '{}', 'type': '零失球获胜'},    # 客队
    # 波胆
    'zero_zero': {'ratio': '0:0', 'type': '波胆'},        # 0:0
    'one_one': {'ratio': '1:1', 'type': '波胆'},          # 1:1
    
    # 罚牌数大小
    'card_over': {'ratio': '大({})', 'type': '罚牌数大小'},     # 大
    'card_under': {'ratio': '小({})', 'type': '罚牌数大小'},    # 小
    # 罚牌数大小 - 半场
    'card_over_half': {'ratio': '大({})', 'type': '罚牌数大小(半场)'},      # 大
    'card_under_half': {'ratio': '小({})', 'type': '罚牌数大小(半场)'},     # 小
    # 罚牌数单双
    'card_odd': {'ratio': '单', 'type': '罚牌数单双'},     # 单
    'card_even': {'ratio': '双', 'type': '罚牌数单双'},    # 双
}

class Game_Info:
    """球赛信息"""
    def __init__(self):
        self._kick_off_time = None    # 开赛时间"
        self._league = None           # 联赛
        self._league_en = None        # 联赛 - 英文
        self._team_home = None        # 主队
        self._team_home_en = None     # 主队 - 英文
        self._team_away = None        # 客队
        self._team_away_en = None     # 客队 - 英文
        self._team = None             # 对战
        self._team_en = None          # 对战 - 英文
        self._team_id = None          # 对战id
        self._source = None           # 来源
        self._game_odds = None        # 球赛盘口&赔率

    # 添加一个方法将对象转换为字典
    def to_dict(self):
        return {
            "kick_off_time": self._kick_off_time,
            "league": self._league,
            "team_home": self._team_home,
            "team_away": self._team_away,
            "team": self._team,
            "team_id": self._team_id,
            "source": self._source,
            "game_odds": self._game_odds
        }

    @property
    def kick_off_time(self):
        """获取 开赛时间"""
        return self._kick_off_time
    
    @kick_off_time.setter
    def kick_off_time(self, value):
        """设置 开赛时间"""
        self._kick_off_time = value

    @property
    def league(self):
        """获取 联赛"""
        return self._league
    
    @league.setter
    def league(self, value):
        """设置 联赛"""
        self._league = value

    @property
    def league_en(self):
        """获取 联赛-英文"""
        return self._league_en
    
    @league_en.setter
    def league_en(self, value):
        """设置 联赛-英文"""
        self._league_en = value

    @property
    def team_home(self):
        """获取 主队名称"""
        return self._team_home
    
    @team_home.setter
    def team_home(self, value):
        """设置 主队名称"""
        self._team_home = value

    @property
    def team_home_en(self):
        """获取 主队名称-英文"""
        return self._team_home_en
    
    @team_home_en.setter
    def team_home_en(self, value):
        """设置 主队名称-英文"""
        self._team_home_en = value
        
    @property
    def team_away(self):
        """获取 客队名称"""
        return self._team_away
    
    @team_away.setter
    def team_away(self, value):
        """设置 客队名称-英文"""
        self._team_away = value
        
    @property
    def team_away_en(self):
        """获取 客队名称-英文"""
        return self._team_away_en
    
    @team_away_en.setter
    def team_away_en(self, value):
        """设置 客队名称"""
        self._team_away_en = value

    @property
    def team(self):
        """获取 对战"""
        return self._team
    
    @team.setter
    def team(self, value):
        """设置 对战"""
        self._team = value

    @property
    def team_en(self):
        """获取 对战"""
        return self._team_en
    
    @team_en.setter
    def team_en(self, value):
        """设置 对战"""
        self._team_en = value

    @property
    def team_id(self):
        """获取 对战id"""
        return self._team_id
    
    @team_id.setter
    def team_id(self, value):
        """设置 对战id"""
        self._team_id = value

    @property
    def source(self):
        """获取 来源"""
        return self._source
    
    @source.setter
    def source(self, value):
        """设置 来源"""
        self._source = value

    @property
    def game_odds(self):
        """获取 球赛盘口&赔率"""
        return self._game_odds
    
    @game_odds.setter
    def game_odds(self, value):
        """设置 球赛盘口&赔率"""
        self._game_odds = value

class Game_Odds:
    """球赛赔率"""
    def __init__(self, key=None, odds=None, dict=None, ratio=None):
        self._key = key                             # 自定义key值, 用于区分
        self._odds = odds                           # 赔率
        self._type = dict.get('type', None)    # 盘口类型
        # 盘口标识处理
        if ratio:
            ratios = ratio.split(',')
            self._ratio = dict.get('ratio', None).format(*ratios)
        else:
            self._ratio = dict.get('ratio', None)

    # 添加一个方法将对象转换为字典
    def to_dict(self):
        return {
            "key": self._key,
            "odds": self._odds,
            "type": self._type,
            "ratio": self._ratio
        }

    @property
    def key(self):
        """获取 key值"""
        return self._key
    
    @key.setter
    def key(self, value):
        """设置 key值"""
        self._key = value

    @property
    def odds(self):
        """获取 赔率"""
        return self._odds
    
    @odds.setter
    def odds(self, value):
        """设置 赔率"""
        self._odds = value

    @property
    def type(self):
        """获取 盘口类型"""
        return self._type
    
    @type.setter
    def type(self, value):
        """设置 盘口类型"""
        self._type = value

    @property
    def ratio(self):
        """获取 盘口"""
        return self._ratio

    @ratio.setter
    def ratio(self, value):
        """设置 盘口"""
        self._ratio = value
